#include <iostream>
using namespace std;

template <typename T>
void floyd(int N, T d, T o)
{
	for(int i=0;i<N;i++)
		for(int j=0;j<N;j++)
			o[i][j]=d[i][j];
	for(int k=0;k<N;k++)
		for(int i=0;i<N;i++)
			for(int j=0;j<N;j++)
				o[i][j]=min(o[i][j], o[i][k]+o[k][j]);
}

int floyd_main()
{
	const int N=3;
	int d[N][N]=
	{
		0,2,6,
		2,0,3,
		6,3,0,
	};

	int o[N][N];
	floyd(N, d,o);
	return 0;
}